package cn.jbolt.ai.resource.function.service;


import cn.jbolt.ai.resource.function.enums.SyncStrategy;
import com.baomidou.mybatisplus.extension.service.IService;
import cn.jbolt.ai.resource.function.entity.AiFunctionParam;
import cn.jbolt.util.Result;

import java.util.List;

public interface AiFunctionParamService extends IService<AiFunctionParam> {

    /**
     * 根据ID获取AI函数参数信息
     *
     * @param id AI函数参数ID
     * @return AI函数参数信息
     */
    Result getParamById(Long id);

    /**
     * 获取所有AI函数参数信息
     *
     * @return 所有AI函数参数列表
     */
    Result getList(String keywords, Long functionId);

    /**
     * 添加新的AI函数参数
     *
     * @param param 新的AI函数参数对象
     * @return 是否添加成功
     */
    Result add(AiFunctionParam param);

    /**
     * 更新AI函数参数信息
     *
     * @param param 需要更新的AI函数参数对象
     * @return 是否更新成功
     */
    Result update(AiFunctionParam param);

    /**
     * 删除AI函数参数
     *
     * @param id AI函数参数ID
     * @return 是否删除成功
     */
    Result del(Long id);

    Result toggleEnable(Long id);


    /**
     * 同步本地AI函数参数
     *
     * @param functionResourceId
     * @param params
     * @param strategy
     */
    void syncNativeFunctionParams(Long functionResourceId, List<AiFunctionParam> params, SyncStrategy strategy);

    /**
     * 根据函数ID获取AI函数参数列表
     * @param functionId
     * @return
     */
    List<AiFunctionParam> getParamListByFunctionId(Long functionId);

    /**
     * 根据函数ID获取AI函数参数列表
     * @param functionIdList
     * @return
     */
    List<AiFunctionParam> getParamListByFunctionId(List<String> functionIdList);
}

